iT邦幫忙

2022 iThome 鐵人賽

0
自我挑戰組

冒牌工程師上學去系列 第 38

2-15 記憶體分配

  • 分享至 

  • xImage
  •  

前面主要都在描述OS如何分配行程資源給procress,讓procress之間不要打架搶資源,現在主要來看看記憶體如何存放這些procress,也就是記憶體配置

記憶體分配方式

可以把記憶體想成一個圖書館那種層架書櫃,某些地方已經有放了書(procress),某幾層的中間還有空位,那接下來你要決定下一本書放哪,有3種方法

https://ithelp.ithome.com.tw/upload/images/20221107/20141684jHmsVquiOF.png

記憶體配置可能遇到的問題

  • 外部碎裂 : 書櫃(Memory)總空間足夠,但因為這些空間沒有連續,導致我的書放不進去(無法配置)
  • 內部碎裂 : 配置一個位置給這本書,放進去後還有多出來沒用到的空間

解決方案

遇到問題後就要想辦法解決(或捨棄?),解決方式如下:

  1. Multiple Base / Limit register set 多重基底限制暫存器
    意思就像當書櫃沒有一個完成空間可以完整放進這本書,但他們零碎的空間加起來卻是放得下這本書的時候(外部碎裂),我就把我要放的這本書撕開,記住我從第幾頁開始撕,撕了幾頁,然後就可以完美放進書櫃了。
    突然想到以前念書時候好像就是常常撕書為了把國語英文數學社會課本的某幾課塞進書包帶回家,因為全部帶整本太重XD
    https://ithelp.ithome.com.tw/upload/images/20221107/20141684tIhKjslIYF.png

  2. Compaction 壓縮
    這個會比較像我們平常整理書櫃的作法,當位置夠但散在不同地方的時候,就會一"推"把所有架上的書緊密接在一起,將零碎的空間集結再一起來放書,但這個解決方法會限制Process皆需支援 Dynamic Binding,因為如果是靜態的這些Process就只能在他放的那個位置
    https://ithelp.ithome.com.tw/upload/images/20221107/20141684WQ1qzNKXKk.png

分類會依照第一篇介紹的分類架構來進行
由於是將學習過程記錄下來,如果有任何錯誤歡迎糾正

以下參考連結在學習過程中覺得非常有幫助:
-Chapter3-作業系統-記憶體管理


上一篇
2-14 臨界區間Bakery's algo
下一篇
2-16 分頁式記憶體管理Paged Memory Management
系列文
冒牌工程師上學去42
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言